/*
 * Comienzo creacion de Documento
 */

/*
 * Crea la Accion para el grid de documento
 */
var acciondocumento = new Ext.ux.grid.RowActions({
			header : 'Acciones',
			autoWidth : false,
			width : 60,
			keepSelection : true,
			actions : [{
						iconIndex : 'action1',
						qtipIndex : 'qtip1',
						iconCls : 'icon-undo',
						tooltip : 'Eliminar'
					}]
		});

/*
 * Crea datastore para el grid de documentos
 */
var xgdocumento = Ext.grid;

var busquedaDocumento = new Ext.ux.grid.Search({
			mode : 'remote',
			iconCls : 'icon-zoom',
			dateFormat : 'm/d/Y',
			minLength : 1,
			width : 250,
			searchText : 'Buscaer',
			searchTipText : 'Ingresee los datos a buscar y presione la tecla',
			selectAllText : 'Buscae Todos',
			shortcutKey : 'b',
			shortcutModifier : 'shift',
			disableIndexes : ['MgDocumento-id']
		})

var dsdocumento = new Ext.data.Store({
			proxy : new Ext.data.HttpProxy({
						url : "/cake/syscable/MgDocumentos/buscaDocumento"
					}),
			reader : new Ext.data.JsonReader({
						id : 'MgDocumento-id',
						root : 'acciones',
						totalProperty : 'total',
						fields : [{
									name : 'MgDocumento-id'
								}, {
									name : 'MgAgente-descripcion'
								}, {
									name : 'MgDocumento-codigo_referencia'
								}, {
									name : 'MgDocumento-cantidad_facturas'
								}, {
									name : 'MgDocumento-adicionado_por'
								}, {
									name : 'MgDocumento-mg_agente_id'
								}, {
									name : 'MgDocumento-suma'
								}, {
									name : 'MgDocumento-valor'
								}, {
									name : 'MgDocumento-fecha_referencia',
									type : 'date',
									dateFormat : 'Y-m-d'
								}, {
									name : 'MgDocumento-modificado_por'
								}, {
									name : 'MgDocumento-modified',
									type : 'date',
									dateFormat : 'Y-m-d'
								}, {
									name : 'MgDocumento-created',
									type : 'date',
									dateFormat : 'Y-m-d'
								}, {
									name : 'action1',
									type : 'string'
								}, {
									name : 'qtip1',
									type : 'string'
								}]
					}),
			sm : new Ext.grid.RowSelectionModel({
						singleSelect : true,
						listeners : {
							load : {
								scope : xgdocumento,
								fn : function() {
									xg.getSelectionModel().selectFirstRow();
								}
							}
						}
					})
		});

/*
 * Crea el grid de documentos
 */
var bbardocumento = new Ext.PagingToolbar({
			pageSize : 12,
			store : dsdocumento,
			displayInfo : true,
			displayMsg : 'Mostrando contratos del {0} - {1} de {2}',
			emptyMsg : 'No hay contratos que mostrar'
		});

griddocumentos = Ext.extend(xgdocumento.GridPanel({
			ds : dsdocumento,
			cm : new xgaccion.ColumnModel({
						defaults : {
							width : 20,
							sortable : true
						},
						columns : [{
									header : "ID",
									dataIndex : 'MgDocumento-id',
									hidden : true
								}, {
									header : "No. Referencia",
									dataIndex : 'MgDocumento-codigo_referencia',
									width : 60
/*
 * , hidden : true
 */
								}, {
									header : "Agente",
									dataIndex : 'MgAgente-descripcion',
									width : 90
								}, {
									header : "No. Facturas",
									dataIndex : 'MgDocumento-cantidad_facturas',
									width : 60
								}, {
									header : "Total Ingresadas",
									dataIndex : 'MgDocumento-suma',
									width : 70
								}, {
									header : "Valor",
									dataIndex : 'MgDocumento-valor',
									width : 40
								}, {
									header : "Fecha Referencia",
									dataIndex : 'MgDocumento-fecha_referencia',
									renderer : Ext.util.Format
											.dateRenderer('d-F-Y'),
									width : 90
								}, {
									header : "Adicionado Por",
									dataIndex : 'MgDocumento-adicionado_por',
									width : 80
								}, {
									header : "Fecha Creacion",
									dataIndex : 'MgDocumento-created',
									renderer : Ext.util.Format
											.dateRenderer('d-F-Y'),
									width : 90
								}, acciondocumento]
					}),
			stripeRows : true,
			columnLines : true,
			width : 900,
			height : 350,
			frame : true,
			autoScroll : true,
			bbar : bbardocumento,
			title : "Listado de Documentos",
			collapsible : true,
			plugins : [acciondocumento, busquedaDocumento],
			iconCls : 'icon-grid',
			hideMode : "offsets",
			viewConfig : {
				forceFit : true
			}
		}));

Ext.reg('griddoctype', griddocumentos);
/*
 * Crea los campos y Forma para agregar documentos
 */
var dsdocumento_agente = new Ext.data.Store({
			proxy : new Ext.data.HttpProxy({
						url : "/cake/syscable/MgDocumentos/comboboxExt/1/MgAgente"
					}),
			reader : new Ext.data.JsonReader({
						id : 'id',
						root : 'datos',
						totalProperty : 'total',
						fields : [{
									name : 'id'
								}, {
									name : 'descripcion'
								}]
					})
		});

var id_documento = new Ext.form.TextField({
			// fieldLabel : 'ID',
			name : 'data[MgDocumento][id]',
			hidden : true
		});
var agente_documento = new Ext.form.ComboBox({
			store : dsdocumento_agente,
			mode : 'local',
			displayField : 'descripcion',
			valueField : 'id',
			typeAhead : true,
			loadingText : 'Buscando...',
			fieldLabel : 'Agente',
			hiddenName : 'data[MgDocumento][mg_agente_id]',
			triggerAction : 'all',
			allowBlank : false,
			emptyText : 'Escoja el agente...',
			forceSelection : true,
			selectOnFocus : true,
			width : 190,
			listEmptyText : 'No hay resultados',
			minChars : 2,
			lazyRender : true

		});
var fecha_referencia_documento = new Ext.form.DateField({
			fieldLabel : 'Fecha Referencia',
			id : 'fecha_referencia_documento',
			labelWidth : 110,
			name : 'data[MgDocumento][fecha_referencia]',
			width : 190,
			allowBlank : false,
			format : 'd-m-Y',
			todayText : 'Hoy'
		});
var codigo_referencia_documento = new Ext.form.NumberField({
			id : 'codigo_referencia_documento',
			fieldLabel : 'Codigo Referencia',
			name : 'data[MgDocumento][codigo_referencia]',
			allowBlank : false,
			// disabled : true,
			// hidden : true,
			blankText : 'No puede estar vacio'
		});

var cantidad_facturas_documento = new Ext.form.NumberField({
			id : 'cantidad_facturas_documento',
			fieldLabel : 'Cantidad Facturas',
			name : 'data[MgDocumento][cantidad_facturas]',
			allowBlank : false, // hidden : true,
			blankText : 'No puede estar vacio',
			minValue : 1,
			minText : "La cantidad debe ser mayor que 0"
		});

var valor_documento = new Ext.form.NumberField({
			id : 'valor_documento',
			fieldLabel : 'Valor',
			name : 'data[MgDocumento][valor]',
			allowBlank : false,
			blankText : 'No puede estar vacio',
			minValue : 1,
			minText : "La cantidad debe ser mayor que 0"
		});

var form_agregar_documento = new Ext.form.FormPanel({
			frame : false,
			bodyStyle : 'padding: 5px 5px 0',
			width : 440,
			height : 200,
			trackResetOnLoad : true,
			labelWidth : 120,
			labelAlign : 'right',
			defaultType : 'textfield',
			buttons : [{
				text : 'Agregar Documento',
				type : 'submit',
				handler : function() {
					form_agregar_documento.form.submit({
								timeout : 350,
								waitMsg : 'Porfavor Espere',
								waitTitle : 'Guardando Datos',
								url : '/cake/syscable/MgDocumentos/insertarExt',
								success : function(form, action) {
									Ext.MessageBox.alert('Mensaje',
											'Documento Agregado exitosamente!',
											function() {
												ventanaAgregarDocumento
														.hide(this);
												form_agregar_documento
														.getForm().reset();
												dsdocumento.load();
											});
								},
								failure : function() {
									Ext.MessageBox.alert('Mensaje',
											'Error al Guardar!');
								}
							});
				}
			}],
			items : [codigo_referencia_documento, agente_documento,
					cantidad_facturas_documento, valor_documento,
					fecha_referencia_documento]

		});

var ventanaAgregarDocumento = new Ext.Window({
			id : 'ventaAgregarDocumento',
			layout : 'border',
			closable : true,
			closeAction : 'hide',
			width : 550,
			height : 210,
			plain : false,
			maximizable : false,
			resizable : false,
			// modal: true,
			title : 'Agregar documento',
			frame : true,
			items : [{
						region : 'center',
						width : 200,
						layout : 'fit',
						frame : false,
						border : false,
						items : [form_agregar_documento]
					}]
		});

/*
 * FINALIZA CREACION DE documento
 * 
 */

var documentoPanel = new Ext.Panel({
			widht : 900,
			height : 630,
			id : 'documentos-panel',
			layout : 'border',
			frame : true,
			title : 'Documentos',
			iconCls : 'icon-documento',
			listeners : {
				'beforeshow' : {
					fn : function() {
						dsdocumento.load({
									params : {
										limit : 12,
										start : 0
									}
								});
					},
					scope : this,
					delay : 0
				}
			},
			items : [{
						region : 'center',
						split : true,
						frame : false,
						border : false,
						items : {
							xtype : 'griddoctype'
						}
					}],
			tbar : [{
						text : 'Agregar Documento',
						tooltip : 'Agregar un Documento',
						iconCls : 'icon-plus',
						handler : function() {
							ventanaAgregarDocumento.show(this)
							form_agregar_documento.getForm().reset();
							dsdocumento_agente.load();
						}
					}]
		});